{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Chapter 1 – The Machine Learning landscape**\n",
    "\n",
    "_This notebook contains the code examples in chapter 1. You'll also find the exercise solutions at the end of the notebook. The rest of this notebook is used to generate `lifesat.csv` from the original data sources, and some of this chapter's figures._\n",
    "\n",
    "You're welcome to go through the code in this notebook if you want, but the real action starts in the next chapter."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<table align=\"left\">\n",
    "  <td>\n",
    "    <a href=\"https://colab.research.google.com/github/ageron/handson-ml3/blob/main/01_the_machine_learning_landscape.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>\n",
    "  </td>\n",
    "  <td>\n",
    "    <a target=\"_blank\" href=\"https://kaggle.com/kernels/welcome?src=https://github.com/ageron/handson-ml3/blob/main/01_the_machine_learning_landscape.ipynb\"><img src=\"https://kaggle.com/static/images/open-in-kaggle.svg\" /></a>\n",
    "  </td>\n",
    "</table>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Setup"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This project requires Python 3.7 or above:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "slideshow": {
     "slide_type": "-"
    }
   },
   "outputs": [],
   "source": [
    "import sys\n",
    "\n",
    "assert sys.version_info >= (3, 7)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Scikit-Learn ≥1.0.1 is required:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "from packaging import version\n",
    "import sklearn\n",
    "\n",
    "assert version.parse(sklearn.__version__) >= version.parse(\"1.0.1\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's define the default font sizes, to plot pretty figures:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "\n",
    "plt.rc('font', size=12)\n",
    "plt.rc('axes', labelsize=14, titlesize=14)\n",
    "plt.rc('legend', fontsize=12)\n",
    "plt.rc('xtick', labelsize=10)\n",
    "plt.rc('ytick', labelsize=10)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Make this notebook's output stable across runs:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "\n",
    "np.random.seed(42)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Code example 1-1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[6.30165767]]\n"
     ]
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "from sklearn.linear_model import LinearRegression\n",
    "\n",
    "# Download and prepare the data\n",
    "data_root = \"https://github.com/ageron/data/raw/main/\"\n",
    "lifesat = pd.read_csv(data_root + \"lifesat/lifesat.csv\")\n",
    "X = lifesat[[\"GDP per capita (USD)\"]].values\n",
    "y = lifesat[[\"Life satisfaction\"]].values\n",
    "\n",
    "# Visualize the data\n",
    "lifesat.plot(kind='scatter', grid=True,\n",
    "             x=\"GDP per capita (USD)\", y=\"Life satisfaction\")\n",
    "plt.axis([23_500, 62_500, 4, 9])\n",
    "plt.show()\n",
    "\n",
    "# Select a linear model\n",
    "model = LinearRegression()\n",
    "\n",
    "# Train the model\n",
    "model.fit(X, y)\n",
    "\n",
    "# Make a prediction for Cyprus\n",
    "X_new = [[37_655.2]]  # Cyprus' GDP per capita in 2020\n",
    "print(model.predict(X_new)) # outputs [[6.30165767]]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Replacing the Linear Regression model with k-Nearest Neighbors (in this example, k = 3) regression in the previous code is as simple as replacing these two\n",
    "lines:\n",
    "\n",
    "```python\n",
    "from sklearn.linear_model import LinearRegression\n",
    "\n",
    "model = LinearRegression()\n",
    "```\n",
    "\n",
    "with these two:\n",
    "\n",
    "```python\n",
    "from sklearn.neighbors import KNeighborsRegressor\n",
    "\n",
    "model = KNeighborsRegressor(n_neighbors=3)\n",
    "```"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[6.33333333]]\n"
     ]
    }
   ],
   "source": [
    "# Select a 3-Nearest Neighbors regression model\n",
    "from sklearn.neighbors import KNeighborsRegressor\n",
    "\n",
    "model = KNeighborsRegressor(n_neighbors=3)\n",
    "\n",
    "# Train the model\n",
    "model.fit(X, y)\n",
    "\n",
    "# Make a prediction for Cyprus\n",
    "print(model.predict(X_new)) # outputs [[6.33333333]]\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Generating the data and figures — please skip"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This is the code I used to generate the `lifesat.csv` dataset. You can safely skip this."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Create a function to save the figures:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "from pathlib import Path\n",
    "\n",
    "# Where to save the figures\n",
    "IMAGES_PATH = Path() / \"images\" / \"fundamentals\"\n",
    "IMAGES_PATH.mkdir(parents=True, exist_ok=True)\n",
    "\n",
    "def save_fig(fig_id, tight_layout=True, fig_extension=\"png\", resolution=300):\n",
    "    path = IMAGES_PATH / f\"{fig_id}.{fig_extension}\"\n",
    "    if tight_layout:\n",
    "        plt.tight_layout()\n",
    "    plt.savefig(path, format=fig_extension, dpi=resolution)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Load and prepare Life satisfaction data"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "To create `lifesat.csv`, I downloaded the Better Life Index (BLI) data from [OECD's website](http://stats.oecd.org/index.aspx?DataSetCode=BLI) (to get the Life Satisfaction for each country), and World Bank GDP per capita data from [OurWorldInData.org](https://ourworldindata.org/grapher/gdp-per-capita-worldbank). The BLI data is in `datasets/lifesat/oecd_bli.csv` (data from 2020), and the GDP per capita data is in `datasets/lifesat/gdp_per_capita.csv` (data up to 2020).\n",
    "\n",
    "If you want to grab the latest versions, please feel free to do so. However, there may be some changes (e.g., in the column names, or different countries missing data), so be prepared to have to tweak the code."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Downloading oecd_bli.csv\n",
      "Downloading gdp_per_capita.csv\n"
     ]
    }
   ],
   "source": [
    "import urllib.request\n",
    "\n",
    "datapath = Path() / \"datasets\" / \"lifesat\"\n",
    "datapath.mkdir(parents=True, exist_ok=True)\n",
    "\n",
    "data_root = \"https://github.com/ageron/data/raw/main/\"\n",
    "for filename in (\"oecd_bli.csv\", \"gdp_per_capita.csv\"):\n",
    "    if not (datapath / filename).is_file():\n",
    "        print(\"Downloading\", filename)\n",
    "        url = data_root + \"lifesat/\" + filename\n",
    "        urllib.request.urlretrieve(url, datapath / filename)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "oecd_bli = pd.read_csv(datapath / \"oecd_bli.csv\")\n",
    "gdp_per_capita = pd.read_csv(datapath / \"gdp_per_capita.csv\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Preprocess the GDP per capita data to keep only the year 2020:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>GDP per capita (USD)</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Country</th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Afghanistan</th>\n",
       "      <td>1978.961579</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Africa Eastern and Southern</th>\n",
       "      <td>3387.594670</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Africa Western and Central</th>\n",
       "      <td>4003.158913</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Albania</th>\n",
       "      <td>13295.410885</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Algeria</th>\n",
       "      <td>10681.679297</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                             GDP per capita (USD)\n",
       "Country                                          \n",
       "Afghanistan                           1978.961579\n",
       "Africa Eastern and Southern           3387.594670\n",
       "Africa Western and Central            4003.158913\n",
       "Albania                              13295.410885\n",
       "Algeria                              10681.679297"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "gdp_year = 2020\n",
    "gdppc_col = \"GDP per capita (USD)\"\n",
    "lifesat_col = \"Life satisfaction\"\n",
    "\n",
    "gdp_per_capita = gdp_per_capita[gdp_per_capita[\"Year\"] == gdp_year]\n",
    "gdp_per_capita = gdp_per_capita.drop([\"Code\", \"Year\"], axis=1)\n",
    "gdp_per_capita.columns = [\"Country\", gdppc_col]\n",
    "gdp_per_capita.set_index(\"Country\", inplace=True)\n",
    "\n",
    "gdp_per_capita.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Preprocess the OECD BLI data to keep only the `Life satisfaction` column:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>Indicator</th>\n",
       "      <th>Air pollution</th>\n",
       "      <th>Dwellings without basic facilities</th>\n",
       "      <th>Educational attainment</th>\n",
       "      <th>Employees working very long hours</th>\n",
       "      <th>Employment rate</th>\n",
       "      <th>Feeling safe walking alone at night</th>\n",
       "      <th>Homicide rate</th>\n",
       "      <th>Household net adjusted disposable income</th>\n",
       "      <th>Household net wealth</th>\n",
       "      <th>Housing expenditure</th>\n",
       "      <th>...</th>\n",
       "      <th>Personal earnings</th>\n",
       "      <th>Quality of support network</th>\n",
       "      <th>Rooms per person</th>\n",
       "      <th>Self-reported health</th>\n",
       "      <th>Stakeholder engagement for developing regulations</th>\n",
       "      <th>Student skills</th>\n",
       "      <th>Time devoted to leisure and personal care</th>\n",
       "      <th>Voter turnout</th>\n",
       "      <th>Water quality</th>\n",
       "      <th>Years in education</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Country</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Australia</th>\n",
       "      <td>5.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>81.0</td>\n",
       "      <td>13.04</td>\n",
       "      <td>73.0</td>\n",
       "      <td>63.5</td>\n",
       "      <td>1.1</td>\n",
       "      <td>32759.0</td>\n",
       "      <td>427064.0</td>\n",
       "      <td>20.0</td>\n",
       "      <td>...</td>\n",
       "      <td>49126.0</td>\n",
       "      <td>95.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>85.0</td>\n",
       "      <td>2.7</td>\n",
       "      <td>502.0</td>\n",
       "      <td>14.35</td>\n",
       "      <td>91.0</td>\n",
       "      <td>93.0</td>\n",
       "      <td>21.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Austria</th>\n",
       "      <td>16.0</td>\n",
       "      <td>0.9</td>\n",
       "      <td>85.0</td>\n",
       "      <td>6.66</td>\n",
       "      <td>72.0</td>\n",
       "      <td>80.6</td>\n",
       "      <td>0.5</td>\n",
       "      <td>33541.0</td>\n",
       "      <td>308325.0</td>\n",
       "      <td>21.0</td>\n",
       "      <td>...</td>\n",
       "      <td>50349.0</td>\n",
       "      <td>92.0</td>\n",
       "      <td>1.6</td>\n",
       "      <td>70.0</td>\n",
       "      <td>1.3</td>\n",
       "      <td>492.0</td>\n",
       "      <td>14.55</td>\n",
       "      <td>80.0</td>\n",
       "      <td>92.0</td>\n",
       "      <td>17.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Belgium</th>\n",
       "      <td>15.0</td>\n",
       "      <td>1.9</td>\n",
       "      <td>77.0</td>\n",
       "      <td>4.75</td>\n",
       "      <td>63.0</td>\n",
       "      <td>70.1</td>\n",
       "      <td>1.0</td>\n",
       "      <td>30364.0</td>\n",
       "      <td>386006.0</td>\n",
       "      <td>21.0</td>\n",
       "      <td>...</td>\n",
       "      <td>49675.0</td>\n",
       "      <td>91.0</td>\n",
       "      <td>2.2</td>\n",
       "      <td>74.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>503.0</td>\n",
       "      <td>15.70</td>\n",
       "      <td>89.0</td>\n",
       "      <td>84.0</td>\n",
       "      <td>19.3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Brazil</th>\n",
       "      <td>10.0</td>\n",
       "      <td>6.7</td>\n",
       "      <td>49.0</td>\n",
       "      <td>7.13</td>\n",
       "      <td>61.0</td>\n",
       "      <td>35.6</td>\n",
       "      <td>26.7</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>90.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2.2</td>\n",
       "      <td>395.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>79.0</td>\n",
       "      <td>73.0</td>\n",
       "      <td>16.2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Canada</th>\n",
       "      <td>7.0</td>\n",
       "      <td>0.2</td>\n",
       "      <td>91.0</td>\n",
       "      <td>3.69</td>\n",
       "      <td>73.0</td>\n",
       "      <td>82.2</td>\n",
       "      <td>1.3</td>\n",
       "      <td>30854.0</td>\n",
       "      <td>423849.0</td>\n",
       "      <td>22.0</td>\n",
       "      <td>...</td>\n",
       "      <td>47622.0</td>\n",
       "      <td>93.0</td>\n",
       "      <td>2.6</td>\n",
       "      <td>88.0</td>\n",
       "      <td>2.9</td>\n",
       "      <td>523.0</td>\n",
       "      <td>14.56</td>\n",
       "      <td>68.0</td>\n",
       "      <td>91.0</td>\n",
       "      <td>17.3</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 24 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "Indicator  Air pollution  Dwellings without basic facilities  \\\n",
       "Country                                                        \n",
       "Australia            5.0                                 NaN   \n",
       "Austria             16.0                                 0.9   \n",
       "Belgium             15.0                                 1.9   \n",
       "Brazil              10.0                                 6.7   \n",
       "Canada               7.0                                 0.2   \n",
       "\n",
       "Indicator  Educational attainment  Employees working very long hours  \\\n",
       "Country                                                                \n",
       "Australia                    81.0                              13.04   \n",
       "Austria                      85.0                               6.66   \n",
       "Belgium                      77.0                               4.75   \n",
       "Brazil                       49.0                               7.13   \n",
       "Canada                       91.0                               3.69   \n",
       "\n",
       "Indicator  Employment rate  Feeling safe walking alone at night  \\\n",
       "Country                                                           \n",
       "Australia             73.0                                 63.5   \n",
       "Austria               72.0                                 80.6   \n",
       "Belgium               63.0                                 70.1   \n",
       "Brazil                61.0                                 35.6   \n",
       "Canada                73.0                                 82.2   \n",
       "\n",
       "Indicator  Homicide rate  Household net adjusted disposable income  \\\n",
       "Country                                                              \n",
       "Australia            1.1                                   32759.0   \n",
       "Austria              0.5                                   33541.0   \n",
       "Belgium              1.0                                   30364.0   \n",
       "Brazil              26.7                                       NaN   \n",
       "Canada               1.3                                   30854.0   \n",
       "\n",
       "Indicator  Household net wealth  Housing expenditure  ...  Personal earnings  \\\n",
       "Country                                               ...                      \n",
       "Australia              427064.0                 20.0  ...            49126.0   \n",
       "Austria                308325.0                 21.0  ...            50349.0   \n",
       "Belgium                386006.0                 21.0  ...            49675.0   \n",
       "Brazil                      NaN                  NaN  ...                NaN   \n",
       "Canada                 423849.0                 22.0  ...            47622.0   \n",
       "\n",
       "Indicator  Quality of support network  Rooms per person  Self-reported health  \\\n",
       "Country                                                                         \n",
       "Australia                        95.0               NaN                  85.0   \n",
       "Austria                          92.0               1.6                  70.0   \n",
       "Belgium                          91.0               2.2                  74.0   \n",
       "Brazil                           90.0               NaN                   NaN   \n",
       "Canada                           93.0               2.6                  88.0   \n",
       "\n",
       "Indicator  Stakeholder engagement for developing regulations  Student skills  \\\n",
       "Country                                                                        \n",
       "Australia                                                2.7           502.0   \n",
       "Austria                                                  1.3           492.0   \n",
       "Belgium                                                  2.0           503.0   \n",
       "Brazil                                                   2.2           395.0   \n",
       "Canada                                                   2.9           523.0   \n",
       "\n",
       "Indicator  Time devoted to leisure and personal care  Voter turnout  \\\n",
       "Country                                                               \n",
       "Australia                                      14.35           91.0   \n",
       "Austria                                        14.55           80.0   \n",
       "Belgium                                        15.70           89.0   \n",
       "Brazil                                           NaN           79.0   \n",
       "Canada                                         14.56           68.0   \n",
       "\n",
       "Indicator  Water quality  Years in education  \n",
       "Country                                       \n",
       "Australia           93.0                21.0  \n",
       "Austria             92.0                17.0  \n",
       "Belgium             84.0                19.3  \n",
       "Brazil              73.0                16.2  \n",
       "Canada              91.0                17.3  \n",
       "\n",
       "[5 rows x 24 columns]"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "oecd_bli = oecd_bli[oecd_bli[\"INEQUALITY\"]==\"TOT\"]\n",
    "oecd_bli = oecd_bli.pivot(index=\"Country\", columns=\"Indicator\", values=\"Value\")\n",
    "\n",
    "oecd_bli.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now let's merge the life satisfaction data and the GDP per capita data, keeping only the GDP per capita and Life satisfaction columns:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>GDP per capita (USD)</th>\n",
       "      <th>Life satisfaction</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Country</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>South Africa</th>\n",
       "      <td>11466.189672</td>\n",
       "      <td>4.7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Colombia</th>\n",
       "      <td>13441.492952</td>\n",
       "      <td>6.3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Brazil</th>\n",
       "      <td>14063.982505</td>\n",
       "      <td>6.4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Mexico</th>\n",
       "      <td>17887.750736</td>\n",
       "      <td>6.5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Chile</th>\n",
       "      <td>23324.524751</td>\n",
       "      <td>6.5</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "              GDP per capita (USD)  Life satisfaction\n",
       "Country                                              \n",
       "South Africa          11466.189672                4.7\n",
       "Colombia              13441.492952                6.3\n",
       "Brazil                14063.982505                6.4\n",
       "Mexico                17887.750736                6.5\n",
       "Chile                 23324.524751                6.5"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "full_country_stats = pd.merge(left=oecd_bli, right=gdp_per_capita,\n",
    "                              left_index=True, right_index=True)\n",
    "full_country_stats.sort_values(by=gdppc_col, inplace=True)\n",
    "full_country_stats = full_country_stats[[gdppc_col, lifesat_col]]\n",
    "\n",
    "full_country_stats.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "To illustrate the risk of overfitting, I use only part of the data in most figures (all countries with a GDP per capita between `min_gdp` and `max_gdp`). Later in the chapter I reveal the missing countries, and show that they don't follow the same linear trend at all."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>GDP per capita (USD)</th>\n",
       "      <th>Life satisfaction</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Country</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Russia</th>\n",
       "      <td>26456.387938</td>\n",
       "      <td>5.8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Greece</th>\n",
       "      <td>27287.083401</td>\n",
       "      <td>5.4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Turkey</th>\n",
       "      <td>28384.987785</td>\n",
       "      <td>5.5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Latvia</th>\n",
       "      <td>29932.493910</td>\n",
       "      <td>5.9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Hungary</th>\n",
       "      <td>31007.768407</td>\n",
       "      <td>5.6</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "         GDP per capita (USD)  Life satisfaction\n",
       "Country                                         \n",
       "Russia           26456.387938                5.8\n",
       "Greece           27287.083401                5.4\n",
       "Turkey           28384.987785                5.5\n",
       "Latvia           29932.493910                5.9\n",
       "Hungary          31007.768407                5.6"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "min_gdp = 23_500\n",
    "max_gdp = 62_500\n",
    "\n",
    "country_stats = full_country_stats[(full_country_stats[gdppc_col] >= min_gdp) &\n",
    "                                   (full_country_stats[gdppc_col] <= max_gdp)]\n",
    "country_stats.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "country_stats.to_csv(datapath / \"lifesat.csv\")\n",
    "full_country_stats.to_csv(datapath / \"lifesat_full.csv\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 360x216 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "country_stats.plot(kind='scatter', figsize=(5, 3), grid=True,\n",
    "                   x=gdppc_col, y=lifesat_col)\n",
    "\n",
    "min_life_sat = 4\n",
    "max_life_sat = 9\n",
    "\n",
    "position_text = {\n",
    "    \"Turkey\": (29_500, 4.2),\n",
    "    \"Hungary\": (28_000, 6.9),\n",
    "    \"France\": (40_000, 5),\n",
    "    \"New Zealand\": (28_000, 8.2),\n",
    "    \"Australia\": (50_000, 5.5),\n",
    "    \"United States\": (59_000, 5.3),\n",
    "    \"Denmark\": (46_000, 8.5)\n",
    "}\n",
    "\n",
    "for country, pos_text in position_text.items():\n",
    "    pos_data_x = country_stats[gdppc_col].loc[country]\n",
    "    pos_data_y = country_stats[lifesat_col].loc[country]\n",
    "    country = \"U.S.\" if country == \"United States\" else country\n",
    "    plt.annotate(country, xy=(pos_data_x, pos_data_y),\n",
    "                 xytext=pos_text, fontsize=12,\n",
    "                 arrowprops=dict(facecolor='black', width=0.5,\n",
    "                                 shrink=0.08, headwidth=5))\n",
    "    plt.plot(pos_data_x, pos_data_y, \"ro\")\n",
    "\n",
    "plt.axis([min_gdp, max_gdp, min_life_sat, max_life_sat])\n",
    "\n",
    "save_fig('money_happy_scatterplot')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>GDP per capita (USD)</th>\n",
       "      <th>Life satisfaction</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Country</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Turkey</th>\n",
       "      <td>28384.987785</td>\n",
       "      <td>5.5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Hungary</th>\n",
       "      <td>31007.768407</td>\n",
       "      <td>5.6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>France</th>\n",
       "      <td>42025.617373</td>\n",
       "      <td>6.5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>New Zealand</th>\n",
       "      <td>42404.393738</td>\n",
       "      <td>7.3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Australia</th>\n",
       "      <td>48697.837028</td>\n",
       "      <td>7.3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Denmark</th>\n",
       "      <td>55938.212809</td>\n",
       "      <td>7.6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>United States</th>\n",
       "      <td>60235.728492</td>\n",
       "      <td>6.9</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "               GDP per capita (USD)  Life satisfaction\n",
       "Country                                               \n",
       "Turkey                 28384.987785                5.5\n",
       "Hungary                31007.768407                5.6\n",
       "France                 42025.617373                6.5\n",
       "New Zealand            42404.393738                7.3\n",
       "Australia              48697.837028                7.3\n",
       "Denmark                55938.212809                7.6\n",
       "United States          60235.728492                6.9"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "highlighted_countries = country_stats.loc[list(position_text.keys())]\n",
    "highlighted_countries[[gdppc_col, lifesat_col]].sort_values(by=gdppc_col)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 360x216 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "country_stats.plot(kind='scatter', figsize=(5, 3), grid=True,\n",
    "                   x=gdppc_col, y=lifesat_col)\n",
    "\n",
    "X = np.linspace(min_gdp, max_gdp, 1000)\n",
    "\n",
    "w1, w2 = 4.2, 0\n",
    "plt.plot(X, w1 + w2 * 1e-5 * X, \"r\")\n",
    "plt.text(40_000, 4.9, fr\"$\\theta_0 = {w1}$\", color=\"r\")\n",
    "plt.text(40_000, 4.4, fr\"$\\theta_1 = {w2}$\", color=\"r\")\n",
    "\n",
    "w1, w2 = 10, -9\n",
    "plt.plot(X, w1 + w2 * 1e-5 * X, \"g\")\n",
    "plt.text(26_000, 8.5, fr\"$\\theta_0 = {w1}$\", color=\"g\")\n",
    "plt.text(26_000, 8.0, fr\"$\\theta_1 = {w2} \\times 10^{{-5}}$\", color=\"g\")\n",
    "\n",
    "w1, w2 = 3, 8\n",
    "plt.plot(X, w1 + w2 * 1e-5 * X, \"b\")\n",
    "plt.text(48_000, 8.5, fr\"$\\theta_0 = {w1}$\", color=\"b\")\n",
    "plt.text(48_000, 8.0, fr\"$\\theta_1 = {w2} \\times 10^{{-5}}$\", color=\"b\")\n",
    "\n",
    "plt.axis([min_gdp, max_gdp, min_life_sat, max_life_sat])\n",
    "\n",
    "save_fig('tweaking_model_params_plot')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "θ0=3.75, θ1=6.78e-05\n"
     ]
    }
   ],
   "source": [
    "from sklearn import linear_model\n",
    "\n",
    "X_sample = country_stats[[gdppc_col]].values\n",
    "y_sample = country_stats[[lifesat_col]].values\n",
    "\n",
    "lin1 = linear_model.LinearRegression()\n",
    "lin1.fit(X_sample, y_sample)\n",
    "\n",
    "t0, t1 = lin1.intercept_[0], lin1.coef_[0][0]\n",
    "print(f\"θ0={t0:.2f}, θ1={t1:.2e}\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 360x216 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "country_stats.plot(kind='scatter', figsize=(5, 3), grid=True,\n",
    "                   x=gdppc_col, y=lifesat_col)\n",
    "\n",
    "X = np.linspace(min_gdp, max_gdp, 1000)\n",
    "plt.plot(X, t0 + t1 * X, \"b\")\n",
    "\n",
    "plt.text(max_gdp - 20_000, min_life_sat + 1.9,\n",
    "         fr\"$\\theta_0 = {t0:.2f}$\", color=\"b\")\n",
    "plt.text(max_gdp - 20_000, min_life_sat + 1.3,\n",
    "         fr\"$\\theta_1 = {t1 * 1e5:.2f} \\times 10^{{-5}}$\", color=\"b\")\n",
    "\n",
    "plt.axis([min_gdp, max_gdp, min_life_sat, max_life_sat])\n",
    "\n",
    "save_fig('best_fit_model_plot')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "37655.1803457421"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cyprus_gdp_per_capita = gdp_per_capita[gdppc_col].loc[\"Cyprus\"]\n",
    "cyprus_gdp_per_capita"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "6.301656332738056"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cyprus_predicted_life_satisfaction = lin1.predict([[cyprus_gdp_per_capita]])[0, 0]\n",
    "cyprus_predicted_life_satisfaction"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 360x216 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "country_stats.plot(kind='scatter', figsize=(5, 3), grid=True,\n",
    "                   x=gdppc_col, y=lifesat_col)\n",
    "\n",
    "X = np.linspace(min_gdp, max_gdp, 1000)\n",
    "plt.plot(X, t0 + t1 * X, \"b\")\n",
    "\n",
    "plt.text(min_gdp + 22_000, max_life_sat - 1.1,\n",
    "         fr\"$\\theta_0 = {t0:.2f}$\", color=\"b\")\n",
    "plt.text(min_gdp + 22_000, max_life_sat - 0.6,\n",
    "         fr\"$\\theta_1 = {t1 * 1e5:.2f} \\times 10^{{-5}}$\", color=\"b\")\n",
    "\n",
    "plt.plot([cyprus_gdp_per_capita, cyprus_gdp_per_capita],\n",
    "         [min_life_sat, cyprus_predicted_life_satisfaction], \"r--\")\n",
    "plt.text(cyprus_gdp_per_capita + 1000, 5.0,\n",
    "         fr\"Prediction = {cyprus_predicted_life_satisfaction:.2f}\", color=\"r\")\n",
    "plt.plot(cyprus_gdp_per_capita, cyprus_predicted_life_satisfaction, \"ro\")\n",
    "\n",
    "plt.axis([min_gdp, max_gdp, min_life_sat, max_life_sat])\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>GDP per capita (USD)</th>\n",
       "      <th>Life satisfaction</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Country</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>South Africa</th>\n",
       "      <td>11466.189672</td>\n",
       "      <td>4.7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Colombia</th>\n",
       "      <td>13441.492952</td>\n",
       "      <td>6.3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Brazil</th>\n",
       "      <td>14063.982505</td>\n",
       "      <td>6.4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Mexico</th>\n",
       "      <td>17887.750736</td>\n",
       "      <td>6.5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Chile</th>\n",
       "      <td>23324.524751</td>\n",
       "      <td>6.5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Norway</th>\n",
       "      <td>63585.903514</td>\n",
       "      <td>7.6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Switzerland</th>\n",
       "      <td>68393.306004</td>\n",
       "      <td>7.5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Ireland</th>\n",
       "      <td>89688.956958</td>\n",
       "      <td>7.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Luxembourg</th>\n",
       "      <td>110261.157353</td>\n",
       "      <td>6.9</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "              GDP per capita (USD)  Life satisfaction\n",
       "Country                                              \n",
       "South Africa          11466.189672                4.7\n",
       "Colombia              13441.492952                6.3\n",
       "Brazil                14063.982505                6.4\n",
       "Mexico                17887.750736                6.5\n",
       "Chile                 23324.524751                6.5\n",
       "Norway                63585.903514                7.6\n",
       "Switzerland           68393.306004                7.5\n",
       "Ireland               89688.956958                7.0\n",
       "Luxembourg           110261.157353                6.9"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "missing_data = full_country_stats[(full_country_stats[gdppc_col] < min_gdp) |\n",
    "                                  (full_country_stats[gdppc_col] > max_gdp)]\n",
    "missing_data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [],
   "source": [
    "position_text_missing_countries = {\n",
    "    \"South Africa\": (20_000, 4.2),\n",
    "    \"Colombia\": (6_000, 8.2),\n",
    "    \"Brazil\": (18_000, 7.8),\n",
    "    \"Mexico\": (24_000, 7.4),\n",
    "    \"Chile\": (30_000, 7.0),\n",
    "    \"Norway\": (51_000, 6.2),\n",
    "    \"Switzerland\": (62_000, 5.7),\n",
    "    \"Ireland\": (81_000, 5.2),\n",
    "    \"Luxembourg\": (92_000, 4.7),\n",
    "}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjQAAADMCAYAAABk1TleAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAABmcklEQVR4nO2dZ3hURduA70khBQJJaCGQBiHZIAJSBETpRaogvYOKBUFCtYCKiq8VBBXhE5QOKvoKoiIiL0FQQUBAASmhJSS0UAIhPZnvx9lddpNN2CSb3ZS5r+tcOWfOnJnnTMo+macJKSUKhUKhUCgUpRknRwugUCgUCoVCUVSUQqNQKBQKhaLUoxQahUKhUCgUpR6l0CgUCoVCoSj1KIVGoVAoFApFqUcpNAqFQqFQKEo9dlVohBCThBCHhRBHhBCR9pxboVAoFApF2cVuCo0QoiEwDrgfaAz0EkLUt9f8CoVCoVAoyi723KGJAHZLKZOllJnADqCfHedXKBQKhUJRRrGnQnMYaCuEqCqE8AR6AAF2nF+hUCgUCkUZxcVeE0kp/xVCvANsBZKAQ0Bmzn5CiCeBJwHc3d2bBQYG2kvEckt2djZOTso/vLhR62wf1DoXjKwswenTlahaNQ1f33Srn1PrbD/UWt/hxIkTCVLK6pbuCUfVchJC/Ac4L6X8JK8+4eHh8vjx43aUqnwSFRVF+/btHS1GmUets31Q63x3pk+H48fhu++067g4qF27YGOodbYfaq3vIITYL6VsbumevaOcaui/BgKPAuvsOb9CoVCUR6SEXbu0r6ApLyEhkJV151qhKO3YzeSk5xshRFUgA3hWSnndzvMrFApFuWP9ehg8GLZtg44dITLS0RIpFLbHrgqNlPIhe86nUCgU5ZH0dPjoIwgLg969oU8fWL4c2rRxtGQKRfGhvIwUCoWijJCu9+l1cYGlS2HLFu3a3R1GjwY3N8fJplAUN0qhUSgUijLAO+/APfdAZiY4OcEff8DHHztaKoXCfiiFRqFQKEohUsLWrZCUpF03agQ9e0Jysnbt7e0w0RQKh6AUGoVCoSiFHDwIXbvCypXadffuMH8+VK7sSKkUCsdh7ygnhUKhUBSSDz7Qvk6eDPfdBxs3QrdujpVJoSgpqB0ahUKhKMHcvHnnfNcu+O23O9d9+ihHX4XCgFJoFAqFooSyYgX4+8PFi9r12rXw9deOlUmhKKkohUahUChKCFJqodbR0dp1mzYwbpwWtQRqN0ahyA+l0CgUCkUJ4do16NsXFi7UrkNDNb+ZGjUcKpZCUSpQCo0NiIqKok6dOsUydnBwML/88ovFezt37iQ8PLxY5lUoFPbh//4PnnpKO69aFf73Py2njEKhKBhKocnB2rVrad68OZUqVaJWrVp0796dXbt2OVosizz00EOoauQKRenjwoU7hSIvXIDTp+9k+W3dGipUcJxsCkVpRSk0JsybN4/IyEheeuklLl26RExMDOPHj2fjxo2OFk2hUJQRtm6FwEAtYgnglVe0NqXEKBRFQyk0ehITE3nllVdYuHAhjz76KBUrVsTV1ZXevXvz3nvvkZaWRmRkJP7+/vj7+xMZGUlaWprFsf7991/at2+Pt7c399xzD999953x3pgxYxg/fjzdu3enUqVKtGnThosXLxIZGYmPjw86nY4DBw6Yjbd3714aNGiAj48PY8eOJTU1Fcht6nr77bepV68eXl5eNGjQgG+//bYYVkqhUBQEKeGnn+DXX7XrNm1g2jSoW1e7dlJ/hRUKm6B+lfT88ccfpKam0q9fP4v333zzTXbv3s3Bgwc5dOgQf/75J3PmzMnVLyMjg969e9O1a1cuX77MRx99xPDhw81MQ1999RVz5swhISEBNzc3WrduTdOmTUlISGDAgAFMmTLFbMw1a9awZcsWTp06xYkTJyzOC1CvXj127txJYmIir776KiNGjODChQtFWBWFQlFUsrNhwgSYO1e79vSEt96C2rUdK5dCUdZQCo2eq1evUq1aNVxcLCdPXrNmDa+88go1atSgevXqvPrqq6xatSpXv927d5OUlMQLL7xAhQoV6NixI7169WLdunXGPv369aNZs2a4u7vTr18/3N3dGTVqFM7OzgwePDjXDs2ECRMICAjA19eXmTNnmo1lysCBA/H398fJyYnBgwdTv359/vzzzyKsikKhKAzr1kG7dpCVBc7O8MMPsH69o6VSKMo2SqHRU7VqVRISEsjMzLR4Pz4+nqCgION1UFAQ8fHxFvsFBATgZLKPHBQURFxcnPG6Zs2axnMPD49c10mGanN6AgIC7jovwMqVK2nSpAne3t54e3tz+PBhEhIS8nplhUJhQ86du1MYskIF7bh6VbsOD1c+MgpFcaMUGj2tW7fG3d2dDRs2WLzv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",
      "text/plain": [
       "<Figure size 576x216 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "full_country_stats.plot(kind='scatter', figsize=(8, 3),\n",
    "                        x=gdppc_col, y=lifesat_col, grid=True)\n",
    "\n",
    "for country, pos_text in position_text_missing_countries.items():\n",
    "    pos_data_x, pos_data_y = missing_data.loc[country]\n",
    "    plt.annotate(country, xy=(pos_data_x, pos_data_y),\n",
    "                 xytext=pos_text, fontsize=12,\n",
    "                 arrowprops=dict(facecolor='black', width=0.5,\n",
    "                                 shrink=0.08, headwidth=5))\n",
    "    plt.plot(pos_data_x, pos_data_y, \"rs\")\n",
    "\n",
    "X = np.linspace(0, 115_000, 1000)\n",
    "plt.plot(X, t0 + t1 * X, \"b:\")\n",
    "\n",
    "lin_reg_full = linear_model.LinearRegression()\n",
    "Xfull = np.c_[full_country_stats[gdppc_col]]\n",
    "yfull = np.c_[full_country_stats[lifesat_col]]\n",
    "lin_reg_full.fit(Xfull, yfull)\n",
    "\n",
    "t0full, t1full = lin_reg_full.intercept_[0], lin_reg_full.coef_[0][0]\n",
    "X = np.linspace(0, 115_000, 1000)\n",
    "plt.plot(X, t0full + t1full * X, \"k\")\n",
    "\n",
    "plt.axis([0, 115_000, min_life_sat, max_life_sat])\n",
    "\n",
    "save_fig('representative_training_data_scatterplot')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 576x216 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "from sklearn import preprocessing\n",
    "from sklearn import pipeline\n",
    "\n",
    "full_country_stats.plot(kind='scatter', figsize=(8, 3),\n",
    "                        x=gdppc_col, y=lifesat_col, grid=True)\n",
    "\n",
    "poly = preprocessing.PolynomialFeatures(degree=10, include_bias=False)\n",
    "scaler = preprocessing.StandardScaler()\n",
    "lin_reg2 = linear_model.LinearRegression()\n",
    "\n",
    "pipeline_reg = pipeline.Pipeline([\n",
    "    ('poly', poly),\n",
    "    ('scal', scaler),\n",
    "    ('lin', lin_reg2)])\n",
    "pipeline_reg.fit(Xfull, yfull)\n",
    "curve = pipeline_reg.predict(X[:, np.newaxis])\n",
    "plt.plot(X, curve)\n",
    "\n",
    "plt.axis([0, 115_000, min_life_sat, max_life_sat])\n",
    "\n",
    "save_fig('overfitting_model_plot')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Country\n",
       "New Zealand    7.3\n",
       "Sweden         7.3\n",
       "Norway         7.6\n",
       "Switzerland    7.5\n",
       "Name: Life satisfaction, dtype: float64"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "w_countries = [c for c in full_country_stats.index if \"W\" in c.upper()]\n",
    "full_country_stats.loc[w_countries][lifesat_col]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>GDP per capita (USD)</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Country</th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Malawi</th>\n",
       "      <td>1486.778248</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Rwanda</th>\n",
       "      <td>2098.710362</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Zimbabwe</th>\n",
       "      <td>2744.690758</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Africa Western and Central</th>\n",
       "      <td>4003.158913</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Papua New Guinea</th>\n",
       "      <td>4101.218882</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Lower middle income</th>\n",
       "      <td>6722.809932</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Eswatini</th>\n",
       "      <td>8392.717564</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Low &amp; middle income</th>\n",
       "      <td>10293.855325</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Arab World</th>\n",
       "      <td>13753.707307</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Botswana</th>\n",
       "      <td>16040.008473</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>World</th>\n",
       "      <td>16194.040310</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>New Zealand</th>\n",
       "      <td>42404.393738</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Sweden</th>\n",
       "      <td>50683.323510</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Norway</th>\n",
       "      <td>63585.903514</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Switzerland</th>\n",
       "      <td>68393.306004</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                            GDP per capita (USD)\n",
       "Country                                         \n",
       "Malawi                               1486.778248\n",
       "Rwanda                               2098.710362\n",
       "Zimbabwe                             2744.690758\n",
       "Africa Western and Central           4003.158913\n",
       "Papua New Guinea                     4101.218882\n",
       "Lower middle income                  6722.809932\n",
       "Eswatini                             8392.717564\n",
       "Low & middle income                 10293.855325\n",
       "Arab World                          13753.707307\n",
       "Botswana                            16040.008473\n",
       "World                               16194.040310\n",
       "New Zealand                         42404.393738\n",
       "Sweden                              50683.323510\n",
       "Norway                              63585.903514\n",
       "Switzerland                         68393.306004"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "all_w_countries = [c for c in gdp_per_capita.index if \"W\" in c.upper()]\n",
    "gdp_per_capita.loc[all_w_countries].sort_values(by=gdppc_col)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 576x216 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "country_stats.plot(kind='scatter', x=gdppc_col, y=lifesat_col, figsize=(8, 3))\n",
    "missing_data.plot(kind='scatter', x=gdppc_col, y=lifesat_col,\n",
    "                  marker=\"s\", color=\"r\", grid=True, ax=plt.gca())\n",
    "\n",
    "X = np.linspace(0, 115_000, 1000)\n",
    "plt.plot(X, t0 + t1*X, \"b:\", label=\"Linear model on partial data\")\n",
    "plt.plot(X, t0full + t1full * X, \"k-\", label=\"Linear model on all data\")\n",
    "\n",
    "ridge = linear_model.Ridge(alpha=10**9.5)\n",
    "X_sample = country_stats[[gdppc_col]]\n",
    "y_sample = country_stats[[lifesat_col]]\n",
    "ridge.fit(X_sample, y_sample)\n",
    "t0ridge, t1ridge = ridge.intercept_[0], ridge.coef_[0][0]\n",
    "plt.plot(X, t0ridge + t1ridge * X, \"b--\",\n",
    "         label=\"Regularized linear model on partial data\")\n",
    "plt.legend(loc=\"lower right\")\n",
    "\n",
    "plt.axis([0, 115_000, min_life_sat, max_life_sat])\n",
    "\n",
    "save_fig('ridge_model_plot')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Exercise Solutions"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "1. Machine Learning is about building systems that can learn from data. Learning means getting better at some task, given some performance measure.\n",
    "2. Machine Learning is great for complex problems for which we have no algorithmic solution, to replace long lists of hand-tuned rules, to build systems that adapt to fluctuating environments, and finally to help humans learn (e.g., data mining).\n",
    "3. A labeled training set is a training set that contains the desired solution (a.k.a. a label) for each instance.\n",
    "4. The two most common supervised tasks are regression and classification.\n",
    "5. Common unsupervised tasks include clustering, visualization, dimensionality reduction, and association rule learning.\n",
    "6. Reinforcement Learning is likely to perform best if we want a robot to learn to walk in various unknown terrains, since this is typically the type of problem that Reinforcement Learning tackles. It might be possible to express the problem as a supervised or semi-supervised learning problem, but it would be less natural.\n",
    "7. If you don't know how to define the groups, then you can use a clustering algorithm (unsupervised learning) to segment your customers into clusters of similar customers. However, if you know what groups you would like to have, then you can feed many examples of each group to a classification algorithm (supervised learning), and it will classify all your customers into these groups.\n",
    "8. Spam detection is a typical supervised learning problem: the algorithm is fed many emails along with their labels (spam or not spam).\n",
    "9. An online learning system can learn incrementally, as opposed to a batch learning system. This makes it capable of adapting rapidly to both changing data and autonomous systems, and of training on very large quantities of data.\n",
    "10. Out-of-core algorithms can handle vast quantities of data that cannot fit in a computer's main memory. An out-of-core learning algorithm chops the data into mini-batches and uses online learning techniques to learn from these mini-batches.\n",
    "11. An instance-based learning system learns the training data by heart; then, when given a new instance, it uses a similarity measure to find the most similar learned instances and uses them to make predictions.\n",
    "12. A model has one or more model parameters that determine what it will predict given a new instance (e.g., the slope of a linear model). A learning algorithm tries to find optimal values for these parameters such that the model generalizes well to new instances. A hyperparameter is a parameter of the learning algorithm itself, not of the model (e.g., the amount of regularization to apply).\n",
    "13. Model-based learning algorithms search for an optimal value for the model parameters such that the model will generalize well to new instances. We usually train such systems by minimizing a cost function that measures how bad the system is at making predictions on the training data, plus a penalty for model complexity if the model is regularized. To make predictions, we feed the new instance's features into the model's prediction function, using the parameter values found by the learning algorithm.\n",
    "14. Some of the main challenges in Machine Learning are the lack of data, poor data quality, nonrepresentative data, uninformative features, excessively simple models that underfit the training data, and excessively complex models that overfit the data.\n",
    "15. If a model performs great on the training data but generalizes poorly to new instances, the model is likely overfitting the training data (or we got extremely lucky on the training data). Possible solutions to overfitting are getting more data, simplifying the model (selecting a simpler algorithm, reducing the number of parameters or features used, or regularizing the model), or reducing the noise in the training data.\n",
    "16. A test set is used to estimate the generalization error that a model will make on new instances, before the model is launched in production.\n",
    "17. A validation set is used to compare models. It makes it possible to select the best model and tune the hyperparameters.\n",
    "18. The train-dev set is used when there is a risk of mismatch between the training data and the data used in the validation and test datasets (which should always be as close as possible to the data used once the model is in production). The train-dev set is a part of the training set that's held out (the model is not trained on it). The model is trained on the rest of the training set, and evaluated on both the train-dev set and the validation set. If the model performs well on the training set but not on the train-dev set, then the model is likely overfitting the training set. If it performs well on both the training set and the train-dev set, but not on the validation set, then there is probably a significant data mismatch between the training data and the validation + test data, and you should try to improve the training data to make it look more like the validation + test data.\n",
    "19. If you tune hyperparameters using the test set, you risk overfitting the test set, and the generalization error you measure will be optimistic (you may launch a model that performs worse than you expect)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.6"
  },
  "metadata": {
   "interpreter": {
    "hash": "22b0ec00cd9e253c751e6d2619fc0bb2d18ed12980de3246690d5be49479dd65"
   }
  },
  "nav_menu": {},
  "toc": {
   "navigate_menu": true,
   "number_sections": true,
   "sideBar": true,
   "threshold": 6,
   "toc_cell": false,
   "toc_section_display": "block",
   "toc_window_display": true
  },
  "toc_position": {
   "height": "616px",
   "left": "0px",
   "right": "20px",
   "top": "106px",
   "width": "213px"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
